.\"
.\" Copyright (C) 1994-2021 Altair Engineering, Inc.
.\" For more information, contact Altair at www.altair.com.
.\"
.\" This file is part of both the OpenPBS software ("OpenPBS")
.\" and the PBS Professional ("PBS Pro") software.
.\"
.\" Open Source License Information:
.\"
.\" OpenPBS is free software. You can redistribute it and/or modify it under
.\" the terms of the GNU Affero General Public License as published by the
.\" Free Software Foundation, either version 3 of the License, or (at your
.\" option) any later version.
.\"
.\" OpenPBS is distributed in the hope that it will be useful, but WITHOUT
.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
.\" FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public
.\" License for more details.
.\"
.\" You should have received a copy of the GNU Affero General Public License
.\" along with this program.  If not, see <http://www.gnu.org/licenses/>.
.\"
.\" Commercial License Information:
.\"
.\" PBS Pro is commercially licensed software that shares a common core with
.\" the OpenPBS software.  For a copy of the commercial license terms and
.\" conditions, go to: (http://www.pbspro.com/agreement.html) or contact the
.\" Altair Legal Department.
.\"
.\" Altair's dual-license business model allows companies, individuals, and
.\" organizations to create proprietary derivative works of OpenPBS and
.\" distribute them - whether embedded or bundled with other software -
.\" under a commercial license agreement.
.\"
.\" Use of Altair's trademarks, including but not limited to "PBS™",
.\" "OpenPBS®", "PBS Professional®", and "PBS Pro™" and Altair's logos is
.\" subject to Altair's trademark licensing policies.
.\"
.TH qhold 1B "6 May 2020" Local "PBS Professional"
.SH NAME
.B qhold 
\- hold PBS batch jobs


.SH SYNOPSIS
.B qhold
[-h <hold list>] <job ID> [<job ID> ...]
.br
.B qhold
--version

.SH DESCRIPTION
Places one or more holds on a job.  A job that has a hold is not
eligible for execution.  Can be used on jobs and job arrays, but not
on subjobs or ranges of subjobs.

If a job identified by
.I job ID
is in the queued, held, or waiting states, then all that occurs is
that the hold type is added to the job.  The job is then put into the
held state if it resides in an execution queue.

If the job is running, the result of the 
.B qhold 
command depends upon whether the job can be checkpointed.
The job can be checkpointed if the OS supports checkpointing, or 
if the application being checkpointed supports checkpointing. 
.br
If the job can be checkpointed, the following happens:
.RS 3
The job is checkpointed and its execution is interrupted.

The resources assigned to the job are released.

The job is placed in the held state in the execution queue.

The job's 
.I Hold_Types 
attribute is set to 
.I u
for 
.I user hold.
.RE

If checkpoint / restart is not supported, 
.B qhold 
simply sets the
job's 
.I Hold_Types 
attribute to 
.I u.  
The job continues to execute.

A job's dependency places a 
.I system 
hold on the job.  When the
dependency is satisfied, the 
.I system 
hold is removed.  This 
.I system 
hold
is the same as the one set by an administrator.  If the administrator
sets a 
.I system 
hold on a job with a dependency, when the
dependency is satisfied, the job becomes eligible for execution.

If the job is in the process of provisioning, it cannot be held.

A hold on a job can be released by the administrator, a Manager, 
an Operator, or the job owner, when the job reaches the time set
in its 
.I Execution_Time
attribute, or when a dependency clears.  See 
.B qrls.1B.

.B Effect of Privilege on Behavior
.br
The following table shows the holds and the privilege required to set each:
.RS 3
Hold  Meaning       Who Can Set
.br
--------------------------------------------------------------
.IP u 6
User          Job owner, Operator, Manager, 
.br
              administrator, root
.IP o 6
Other         Operator, Manager, administrator, root
.IP s 6
System        Manager, administrator, root, 
.br
              PBS (dependency)
.IP n 6
None          Job owner, Operator, Manager, 
.br
              administrator, root
.IP p 6
Bad password  Administrator, root
.RE
.LP

.SH OPTIONS
.IP "(no options)" 8
Same as 
.I -h u.
Applies the 
.I user
hold to the specified job(s).
.IP "-h <hold list>" 8
Types of holds to be placed on the job(s).

The
.I hold list
argument is a string consisting of one or more of the letters
.I """u""", """o""", 
or 
.I """s"""
in any combination, or one of the letters
.I """n""" 
or 
.I """p""".

.IP "--version" 8
The 
.B qhold
command returns its PBS version information and exits.
This option can only be used alone.


.SH OPERANDS
The 
.B qhold 
command can be used on jobs and job arrays, but not on subjobs or ranges 
of subjobs.  The 
.B qhold 
comand accepts one or more 
.I job IDs
in the form:
.RS 4
.I <sequence number>[.<server name>][@<server name>]
.br
.I <sequence number>[][.<server name>][@<server name>]
.RE
Note that some shells require that you enclose a job array identifier in
double quotes.

.SH STANDARD ERROR
The 
.B qhold 
command writes a diagnostic message to standard error for each
error occurrence.

.SH EXIT STATUS
.IP Zero 8
Upon successful processing of all operands

.IP "Greater than zero" 8
If the 
.B qhold 
command fails to process any operand

.SH SEE ALSO
qrls(1B), qalter(1B), qsub(1B), pbs_alterjob(3B), pbs_holdjob(3B),
pbs_rlsjob(3B), pbs_job_attributes(7B), pbs_resources(7B)
